<?php

// Charge les librairies nécessaires
require_once("lib/bootstrap.php");
require_once("lib/template.inc");
require_once("classes/View.php");

// fait son job de controleur : appelle les fonctions qui vont bien en 
// fonction des infos post et get.
$session = Session::getInstance();
$contenu = "";
// Récupère le contenu qui va bien.
//récupération de la variable get "page"
if (isset($_GET['page']))
	$page = $_GET['page'];
if (isset($_GET['journal']))
	$journal = $_GET['journal'];
if (isset($_GET['edition']))
	$edition = $_GET['edition'];
if (isset($_GET['idArticle']))
	$idObjetPanier = $_GET['idArticle'];
	

if(isset($page)){
	switch ($page) {
		//on affiche la page d'accueil
		case "accueil":
		    $contenu = VueAccueil::afficher();
		    break;
		case "activer":
			$_SESSION['message'] = Inscription::activer($_GET['activer']);
			$contenu = VueAccueil::afficher();
			break;
		case "viderPanier":
			$Panier = Session::getInstance()->getPanier();
			$Panier->videPanier();
			$contenu = VuePanier::afficher($Panier);
			break;
		case "ajoutPanier":
			if (isset($_GET['edition'])&&$edition!=""){
				$Panier = Session::getInstance()->getPanier();
				$ObjetEdition = new Edition();
				$ObjetEdition = $ObjetEdition->recupEdition($edition);
				if ($Panier->isObject($ObjetEdition)){
					$contenu = VuePanier::afficherMessage($Panier,"L'article ajouté est déjà présent dans le panier.");
				}else{
					$Panier->ajoutPanier($ObjetEdition);
					$contenu= VuePanier::afficher($Panier);
				}
			}else{
				$Panier = Session::getInstance()->getPanier();
				$contenu= VuePanier::afficherMessage($Panier,"Erreur dans le numéro d'article à ajouter.");
			}
			break;
		case "suppArticle":
			if (isset($_GET['idArticle'])&&$idObjetPanier!=""){
				$Panier = Session::getInstance()->getPanier();
				$ObjetEdition = new Edition();
				$ObjetEdition = $ObjetEdition->recupEdition($idObjetPanier);
				if($Panier->isObject($ObjetEdition)){
					$Panier->suppPanier($ObjetEdition);
					$contenu= VuePanier::afficher($Panier);
				}else{
					$contenu = VuePanier::afficherMessage($Panier,"L'article à supprimer n'est pas présent en base.");
				}
			}else{
				$Panier = Session::getInstance()->getPanier();
				$contenu= VuePanier::afficherMessage($Panier,"Erreur dans le numéro d'article à supprimer.");
			}
			break;
		case "panier":
				$Panier = Session::getInstance()->getPanier();
				$contenu = VuePanier::afficher($Panier);
			break;
		case "commande":
				$Panier = Session::getInstance()->getPanier();
				$contenu = VueCommande::Commander($Panier);
			break;
		//on affiche le catalogue
		case "catalogue":
			try{
			    $contenu = Catalogue::afficher();
			}catch(ControlException $e){
				
			}
		    break;
		case "edition":
			$contenu = VueEdition::afficher($edition);
			break;
		case "journal":
			if(isset($journal)){
				$contenu = VueJournal::afficher($journal);
			}else{
				$contenu = VueJournal::afficherErreur();
			}
			break;
		//on affiche la rebrique mon compte
		case "moncompte":
			if (isset($_GET['authentification']) && isset($_POST['email']) && isset($_POST['password'])){
				$res = CompteClient::authentifie($_POST['email'], $_POST['password']);
				if (is_null($res))
					$contenu = MonCompte::erreurConnexion();
				else{
					Session::getInstance()->setCompteClient($res);
					header('location:index.php?page=moncompte');
				}
					
			}
			elseif(isset($_GET['inscription'])){
				if (isset($_POST['password_confirm'])){
					
					try{
						$msg = Inscription::inscrire($_POST['nom'],$_POST['prenom'],$_POST['mail'],
									$_POST['password'], $_POST['password_confirm']);
						$contenu = MonCompte::SuccesInscription($msg);
					}catch(ControlException $e){
						$contenu = MonCompte::EchecInscription($e->getMessage(),$_POST['nom'],$_POST['prenom'], $_POST['mail']);
					}				
					
					
				}
				else
					$contenu = MonCompte::inscription();
			}
			elseif (isset($_GET['modifCompte'])){
				$contenu = MonCompte::modifierCompte();
			}
			elseif (isset($_GET['modifMail'])){
				Inscription::changerMail($_POST['email'],$_POST['email2'],$_POST['password']);
			}
			elseif (isset($_GET['modifMdp'])){
				Inscription::changerMDP($_POST['newpassword'], $_POST['newpassword2'], $_POST['password']);
				$contenu = MonCompte::afficher();
			}
			elseif (isset($_GET['recharger'])){
				if (!isset($_POST['credit']))
					$contenu = MonCompte::recharger();
				else{
					$session->getCompteClient()->recharger($_POST['credit']);
					$contenu = MonCompte::afficher();
				}
			}
			elseif(isset($_GET['voirclasseur']))
				$contenu = MonCompte::classeur();
			elseif (isset($_GET['achat']))
			{
				$session->getCompteClient()->debiter($_GET['debit']);
				$contenu = $session->getCompteClient()->ajouterClasseur($session->getPanier());
				$session->getPanier()->videPanier();
			}	 
			elseif (!is_null(Session::getInstance()->getCompteClient())){
				if (isset($_GET['deconnexion'])){
					$session->deconnexion();
					$contenu = MonCompte::login();
				}
				else
					$contenu = MonCompte::afficher();
					
			}
			else 
				$contenu = MonCompte::login();
	    	break;
	    	
		case "editeur":
			if (isset($_POST['login'])){
				$editeur = Editeur::checkLogin($_POST['login'],$_POST['password']);
				if (!is_null($editeur)){
					Session::getInstance()->setEditeur($editeur);
				}
			}
			elseif (isset($_FILES['edition']))
				Upload::uploadJournal($_POST['titre'],$_POST['journal'],$_POST['descriptif'],$_POST['issn']);
			elseif (isset($_FILES['publicite']))
				Upload::uploadPub($_POST['journal']);
			
			if (!is_null(Session::getInstance()->getEditeur()))
				$contenu = VueEdit::affiche();
			else
				$contenu = VueEdit::form();
			break;
	    //on affiche la page d'aide
	    case "aide":
	    	$contenu = Aide::afficher();
		    break;
		//si valeur get inconnue, on affiche un erreur
		default:
    		$contenu = "Erreur Varibale GET page";
	}
}else{
	$contenu = VueAccueil::afficher();
}

View::affichePage($contenu);

$session=null; // A pour effet d'enregistrer la session (saybeau, non ?)

// On fait quelques tests. A enlever après.
// Inscription::test();
?> 